En el mundo de Rust, una herramienta de línea de comandos robusta no es simplemente un único script; es un plan cuidadosamente orquestado Plan maestro del proyecto. Para construir una herramienta como grep, dividimos nuestro trabajo entre un Crate binario y un Crate de biblioteca.
1. La metáfora de la máquina de café
Imagina una máquina de café de gama alta. El lib.rs contiene los mecanismos internos para calentar agua y moler granos—la "lógica del motor". El main.rs es el botón externo que presiona el usuario—la "interfaz". Al mantenerlos separados, un técnico puede probar el calentador (biblioteca) sin tener que presionar el botón físico (binario) cada vez.
2. Armado del motor
Comenzamos con $ cargo new minigrep. Aunque esto crea un main.rs, debemos introducir manualmente src/lib.rs. Esta división arquitectónica asegura que nuestra lógica central de búsqueda permanezca desacoplada del análisis de la interfaz de línea de comandos, lo que permite pruebas más fáciles y modularidad.
3. Modularidad verificable
Al mover la lógica a lib.rs, utilizamos el marco de prueba de Rust para llamar a funciones de biblioteca en un entorno controlado. Usamos use minigrep; en nuestro binario para importar el motor mientras mantenemos aislada la lógica de análisis de línea de comandos.